const crypto = require('crypto');
const fs = require('fs');

/**
 * 生成MD5哈希值（不带横杠）
 * @param {string} str - 要哈希的字符串
 * @returns {string} 32位MD5哈希值
 */
function generateMD5(str) {
  return crypto.createHash('md5').update(str).digest('hex');
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

function randomMs(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

/**
 * 同步删除文件夹及其所有内容
 * @param {string} dirPath - 要删除的文件夹路径
 */
function deleteFolderRecursive(dirPath) {
  try {
    if (fs.existsSync(dirPath)) {
      fs.rmSync(dirPath, { recursive: true, force: true });
      console.log(`成功删除文件夹: ${dirPath}`);
    } else {
      console.warn(`文件夹不存在: ${dirPath}`);
    }
  } catch (error) {
    console.error(`删除文件夹失败: ${dirPath}`, error);
    throw error;
  }
}

/**
 * 获取东八区当前日期
 * @param {number} day - 天数
 * @returns {string} 格式为YYYY-MM-DD的日期字符串
 */
function getSevenDaysAgo(day = 7) {
  const now = new Date();
  // 设置时间为7天前，并归零时分秒
  now.setDate(now.getDate() - day);
  now.setHours(0, 0, 0, 0);

  return now
    .toLocaleString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      timeZone: 'Asia/Shanghai',
    })
    .replace(/\//g, '-'); // 将默认的 yyyy/MM/dd 改为 yyyy-MM-dd
}

/**
 * 获取东八区当前日期
 * @returns {string} 格式为YYYY-MM-DD的日期字符串
 */
function currentDate() {
  const now = new Date();
  // 使用toLocaleString设置时区为中国标准时间
  return now
    .toLocaleString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      timeZone: 'Asia/Shanghai',
    })
    .replace(/\//g, '-');
}

/**
 * 获取东八区当前日期时间
 * @returns {string} 格式为YYYY-MM-DD HH:mm:ss的日期时间字符串
 */
function currentDatetime() {
  const now = new Date();
  // 使用toLocaleString设置时区为中国标准时间
  return now
    .toLocaleString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      timeZone: 'Asia/Shanghai',
    })
    .replace(/\//g, '-');
}

/**
 * 从URL中提取职位ID
 * @param {string} url - 包含职位ID的URL
 * @returns {string|null} 提取的职位ID，如果无法提取则返回null
 */
function extractJobIdFromUrl(url) {
  try {
    // 匹配 /jobs/ 和 /detail.html 之间的部分
    const match = url.match(/\/jobs\/(\w+)\/detail\.html/);
    return match ? match[1] : null;
  } catch (error) {
    console.error('提取职位ID失败:', error);
    return null;
  }
}


module.exports = {
  generateMD5,
  getSevenDaysAgo,
  currentDate,
  currentDatetime,
  extractJobIdFromUrl,
  sleep,
  randomMs,
  deleteFolderRecursive
};
